A Code Motion Framework for Global Instruction Scheduling

نویسنده

  • Rajiv Gupta
چکیده

A framework for global instruction scheduling is developed that progressively improves a given instruction schedule by eliminating delay slots in the schedule one at a time through the application of global code motions. The elimination of a delay slot is carried out in two steps: a goal oriented search which identiies a global code motion or a cascade of code motions that eliminate the delay without introducing additional delay slots in critical areas of the program; and a transformation step in which the code motion is performed along with compensation code placement and application of code optimizations enabled by code motion. The framework is powerful in that it incorporates code hoisting, including speculative hoisting, code sinking, and integrates partial redundancy elimination and partial dead code elimination optimizations with the code motion transformations. The framework is exible in that it allows formulation of new as well as existing powerful scheduling strategies, allows restrictions to be placed on the type of instructions involved in code motion, the program regions from which the instructions can be selected for code motion, and the extent to which code motion alternatives are explored. The framework is eecient because it computes the required data dependence information on demand from the program control ow graph. Thus, it neither requires exhaustive precomputation of all data dependencies and nor their representation in form of a dependence graph prior to scheduling.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Resource Spackling: A Framework for Integrating Register Allocation in Local and Global Schedulers

We present Resource Spackling, a framework for integrating register allocation and instruction scheduling that is based on a Measure and Reduce paradigm. The technique measures the resource requirements of a program and uses the measurements to distribute code for better resource allocation. The technique is applicable to the allocation of diierent types of resources. A program's resource requi...

متن کامل

Resource Spackling: A Framework for Integrating Register Allocation in Local and Global Schedulersy

We present Resource Spackling, a framework for integrating register allocation and instruction scheduling that is based on a Measure and Reduce paradigm. The technique measures the resource requirements of a program and uses the measurements to distribute code for better resource allocation. The technique is applicable to the allocation of diierent types of resources. A program's resource requi...

متن کامل

Global Instruction Scheduling In Machine SUIF

Machine SUIF is a retargetable compiler backend designed by the HUBE research group at Harvard University. It extends the SUIF compilation system for machine-specific compilation and optimization. In this paper, we present one such optimization phase, global instruction scheduling for acyclic graphs. In a single scheduling framework, we are implementing both trace-based and DAG-based scheduling...

متن کامل

A Treegion-based Unified Approach to Speculation and Predication in Global Instruction Scheduling

This paper presents a treegion-based global scheduling technique for wide issue VLIW/EPIC processors. A treegion is a single-entry/multiple-exit global scheduling scope that consists of basic blocks with control-flow forming a tree. We propose a two-phase approach to global scheduling within a treegion scope that enables speculative code motion in the first phase and uses predication of all ins...

متن کامل

Wavefront Scheduling : Path Based Data Representation andScheduling

The IA-64 architecture is rich with features that enable aggressive exploitation of instruction-level parallelism. Features such as speculation, predication, multiway branches and others provide compilers with new opportunities for the extraction of parallelism in programs. Code scheduling is a central component in any compiler for the IA-64 architecture. This paper describes the implementation...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1998